
import store from '@/store/index'


/**
 * 登录，退出操作
 * 
 **/
const user = {
    state: {
        userId:'',
         isLogin:false,
        localLanguage:'en'
    },
    mutations: {
        LOGING_STATE: (state, params) => {
            localStorage.setItem('userId',params.userId);
            state.userId = localStorage.getItem('userId');
            state.isLogin=true;
        }
    },
    actions: {
        userLogin({ commit }, params) {//登录异步操作
        
              let loginId=params.loginId;
              let loginPwd=params.loginPwd;
                return new Promise((resolve, reject) => {//返回一个Promise对象执行异步操作；
                    if(loginId==='admin' && loginPwd==='123'){
                        commit('LOGING_STATE',{"userId":loginId});
                        resolve('ok');
                    }else{
                        reject('auth_fail');
                    }
                })
        },
    }
}
/**
 * Promise 是一种全新的异步操作实现方式。Promise从语法上来说是对象，简单来说是用于保存一个异步操作结果的容器；
 * （1）对象的状态不受外界影响。Promise对象代表一个异步操作，有三种状态：Pending（进行中）、Resolved（已完成，又称 Fulfilled）
 *  和Rejected（已失败）。只有异步操作的结果，可以决定当前是哪一种状态，任何其他操作都无法改变这个状态。这也是Promise这个名字的由来，它的英语意思就是“承诺”，表示其他手段无法改变。
 * （2）一旦状态改变，就不会再变，任何时候都可以得到这个结果。Promise对象的状态改变，
 * 只有两种可能：从Pending变为Resolved和从Pending变为Rejected。只要这两种情况发生，状态就凝固了，不会再变了，会一直保持这个结果。
 * 就算改变已经发生了，你再对Promise对象添加回调函数，也会立即得到这个结果。这与事件（Event）完全不同，事件的特点是，如果你错过了它，再去监听，
 * 是得不到结果的。
 * 有了Promise对象，就可以将异步操作以同步操作的流程表达出来，避免了层层嵌套的回调函数。此外，Promise对象提供统一的接口，使得控制异步操作更加容易。
 *
 * 
 */
export default user